import { reqGoodsDetail } from '../../../api/goods'
import userStoreBehavior from '../../../behaviors/userStoreBehavior'
import { toast } from '@/utils/extendApi'
import { reqAddCart, reqCartList } from '@/api/cart'
Page({
  // 声明使用userStoreBehavior获取userStore仓库中的数据
  behaviors: [userStoreBehavior],
  // 页面的初始数据
  data: {
    goodsId: '',
    goodsInfo: {}, // 商品详情
    show: false, // 控制加入购物车和立即购买弹框的显示
    count: 1, // 商品购买数量，默认是 1
    blessing: '', // 祝福语
    buyNow: 0, // 控制是加入购物车(0)还是立即购买(1)
    allCount: '0' // 购物车内全部的商品数量 因为要展示99+因此使用字符串类型
  },
  // 获取商品详情
  async getGoodsInfo() {
    const result = await reqGoodsDetail(this.data.goodsId)
    // 存储商品详情数据
    this.setData({
      goodsInfo: result.data
    })
  },
  // 点击商品大图全屏预览
  previewImg() {
    wx.previewImage({
      urls: [this.data.goodsInfo.imageUrl], // 预览的图片url列表
      current: this.data.goodsInfo.imageUrl, // 当前预览图片的url
      showmenu: true // 显示长按菜单
    })
  },
  // 加入购物车
  handleAddcart() {
    this.setData({
      show: true,
      buyNow: 0
    })
  },
  // 立即购买
  handeGotoBuy() {
    this.setData({
      show: true,
      buyNow: 1
    })
  },
  // 点击关闭弹框时触发的回调
  onClose() {
    this.setData({ show: false })
  },
  // 监听是否更改了购买数量
  onChangeGoodsCount(event) {
    this.setData({
      count: event.detail
    })
  },
  // 计算购物车商品数量
  async getCartCount() {
    // 判断用户是否登录，若未登录则购物车数量默认为0
    if (!this.data.token) return
    // 获取商品列表数据用于计算购物车中商品的总数
    const result = await reqCartList()
    // 用于临时存储商品总数
    let allCount = 0
    result.data.forEach((item) => {
      allCount += item.count
    })
    // 如果商品总数大于99 则显示 99+
    this.setData({
      allCount: allCount > 99 ? '99+' : allCount.toString()
    })
  },
  // 点击确定按钮的回调
  async save() {
    const { token, blessing, buyNow, goodsId, count } = this.data
    // 判断用户是否登录
    if (token) {
      // 已经登录
      // 表单校验，祝福语不能为空
      if (!blessing) {
        toast('祝福语不能为空！')
        return
      }
      // 判断是加入购物车还是立即购买
      if (buyNow) {
        // 立即购买，跳转到订单详情页面
        wx.navigateTo({
          url: `/modules/orderPayModule/pages/order/detail/detail?goodsId=${goodsId}&blessing=${blessing}`
        })
      } else {
        // 加入购物车 发请求
        await reqAddCart({ goodsId, count, blessing })
        toast('加入购物车成功！', 'success')
        this.setData({
          // 关闭弹窗
          show: false
        })
        // 重新计算购物车内商品总数
        this.getCartCount()
      }
    } else {
      // 未登录，跳转到登录页面
      wx.navigateTo({
        url: '/pages/login/login'
      })
      return
    }
  },
  onLoad(option) {
    // 获取传递的商品id
    this.setData({
      goodsId: option.goodsId
    })
    // 获取商品详情数据
    this.getGoodsInfo()
    // 计算用户当前购物车中全部商品数量用于徽标展示
    this.getCartCount()
  },
  // 当登录之后返回商品详情页面时更新徽标
  onShow() {
    // 获取当前购物车中商品总数
    this.getCartCount()
  },
  // 监听转发
  onShareAppMessage() {
    return {
      title: '所有怦然心动，都是你',
      path: '/pages/index/index',
      imageUrl: '../../../../../assets/images/banner.jpg'
    }
  },
  // 分享到朋友圈
  onShareTimeline() {}
})
